package com.intelligent.system.common.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;

@Data
@ApiModel(description = "消息传输对象")
public class MessageDTO {
    
    @ApiModelProperty(value = "消息ID", example = "1")
    private Long id;
    
    @ApiModelProperty(value = "消息类型（1:系统通知 2:业务消息 3:告警消息 4:操作日志 5:广播消息）", example = "1")
    private String type;
    
    @ApiModelProperty(value = "消息数据（JSON格式）", example = "{\"key\":\"value\"}")
    private String data;
    
    @ApiModelProperty(value = "消息时间戳", example = "1648888888888")
    private Long timestamp;
    
    @ApiModelProperty(value = "客户端ID", example = "client_001")
    private String clientId;
    
    @ApiModelProperty(value = "消息状态（0:未读 1:已读）", example = "0")
    private Integer status;
    
    @ApiModelProperty(value = "消息标题", example = "系统通知")
    private String title;
    
    @ApiModelProperty(value = "消息内容", example = "这是一条系统通知")
    private String content;
    
    @ApiModelProperty(value = "消息来源", example = "system")
    private String source;
    
    @ApiModelProperty(value = "消息级别（1:普通 2:重要 3:紧急）", example = "1")
    private Integer level;
    
    @ApiModelProperty(value = "接收者ID（广播消息时为null）", example = "1001")
    private Long receiverId;
    
    @ApiModelProperty(value = "发送者ID", example = "1000")
    private Long senderId;
    
    @ApiModelProperty(value = "广播范围（1:全部 2:指定角色 3:指定部门 4:指定用户组）", example = "1")
    private Integer broadcastScope;
    
    @ApiModelProperty(value = "广播目标（JSON数组）", example = "[1,2,3]")
    private String broadcastTargets;
    
    @ApiModelProperty(value = "是否广播消息（0:否 1:是）", example = "0")
    private Integer isBroadcast;
    
    @ApiModelProperty(value = "广播开始时间", example = "2024-01-01 12:00:00")
    private LocalDateTime broadcastStartTime;
    
    @ApiModelProperty(value = "广播结束时间", example = "2024-01-02 12:00:00")
    private LocalDateTime broadcastEndTime;
    
    @ApiModelProperty(value = "创建时间", example = "2024-01-01 12:00:00")
    private LocalDateTime createTime;
    
    @ApiModelProperty(value = "更新时间", example = "2024-01-01 12:00:00")
    private LocalDateTime updateTime;
    
    @ApiModelProperty(value = "创建者", example = "admin")
    private String createBy;
    
    @ApiModelProperty(value = "更新者", example = "admin")
    private String updateBy;
    
    @ApiModelProperty(value = "备注", example = "这是一条备注信息")
    private String remark;
} 